
//找出0/1字符串中0和1连续出现的最大次数

#include <iostream>
#include <cstring>
using namespace std;

/**
    1. 如果第一个是1就找到不是1位置，记录下1的个数
    2. 如果第一个是0就找到不是0的位置，记录下0的个数
    3. 再从1-0或者0-1转化处，重新执行1，2步
*/
//通过指针输出两个值
int getMax(char * str,int * max0,int * max1)
{

    int tmp0=0,tmp1=0;
    int len = strlen(str);
    if(str==NULL) return 0;
    for(int i = 0;i<len;i++)
    {
        if(str[i]=='0')
        {
            tmp0++;

            if(i!=len-1&&str[i+1]=='1') //转折点
            {
                if(tmp0>*max0)
                {
                    *max0=tmp0;
                }
                //到转折点tmp重新置0；
                tmp0=0;
            }
        }

        if(str[i]=='1')
        {
            tmp1++;
            if(i!=len-1&&str[i+1]=='0')
            {
                if(tmp1>*max1)
                {
                    *max1=tmp1;
                }
                tmp1=0;
            }

        }

    }
    //当i=len-1,进行最后一次比较
    if(tmp0>*max0)
    {
        *max0=tmp0;
    }
    if(tmp1>*max1)
    {
        *max1=tmp1;
    }
    return 1;
}
int main()
{
    char str[]="111001111110000";
    int max0=0,max1=0;
    getMax(str,&max0,&max1);
    cout<<"max0="<<max0<<",max1="<<max1<<endl;
    system("pause");
    return 0;
}
